package tpalgo3.vista;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Observable;
import java.util.Observer;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;

import tpalgo3.entidades.Jugador;
import tpalgo3.juego.Juego;
import tpalgo3.vista.util.VistaUtil;

public class BarraEstadoJugador extends JPanel implements Observer {
	private static final long serialVersionUID = 6796069394717748322L;

	private JLabel vidaLabel;
	private JLabel dineroLabel;
	private JButton iniciarButton;
	
	private Juego juego;	
	private Jugador model;
	
	public BarraEstadoJugador(final Juego juego) {
		super(new FormLayout(
				new ColumnSpec[]{
						new ColumnSpec("255px"),
						new ColumnSpec("185px"),
						new ColumnSpec("255px")
				},
				new RowSpec[]{
						new RowSpec("28px")
				}));

		this.juego = juego;
		this.model = juego.getJugador();
		
		this.setBackground(Color.ORANGE);

		CellConstraints cc = new CellConstraints();

		dineroLabel = new JLabel("Dinero: $" + model.getDinero());
		dineroLabel.setFont(new Font("Arial", Font.BOLD, 14));
		this.add(dineroLabel, cc.xy(1, 1, CellConstraints.CENTER, CellConstraints.CENTER));
		
		iniciarButton = new JButton("Iniciar juego", VistaUtil.createImageIcon("img/button_ok.gif"));
		iniciarButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				juego.iniciar();
				iniciarButton.setEnabled(false);
			}
		});
		iniciarButton.setEnabled(true);
		this.add(iniciarButton, cc.xy(2, 1));
		
		vidaLabel = new JLabel("Vida: " + model.getVida());
		vidaLabel.setFont(new Font("Arial", Font.BOLD, 14));
		this.add(vidaLabel, cc.xy(3, 1, CellConstraints.CENTER, CellConstraints.CENTER));

		model.addObserver(this);
	}
	
	@Override
	public void update(Observable arg0, Object arg1) {
		actualizarBarra();
	}
	
	private void actualizarBarra() {
		dineroLabel.setText("Dinero: $" + model.getDinero());
		vidaLabel.setText("Vida: " + model.getVida());
	}
}